package com.ruoyi.system.domain.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 计费规则对象 billing_rules
 *
 * @author ruoyi
 * @date 2025-05-19
 */
@Data
@ApiModel("计费规则对象")
public class BillingRulesVO extends AbdulBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @ApiModelProperty("主键ID")
    private Long id;

    /** 计费编号 */
    @ApiModelProperty("计费编号")
    @Excel(name = "计费编号")
    private String billingCode;

    /** 计费方式名称 */
    @ApiModelProperty("计费方式名称")
    @Excel(name = "计费方式名称")
    private String billingName;

    /** 排序（数值越小越靠前） */
    @ApiModelProperty("排序")
    @Excel(name = "排序", readConverterExp = "数=值越小越靠前")
    private Long sortOrder;

    /** 计费规则类型 */
    @ApiModelProperty("计费规则类型")
    @Excel(name = "计费规则类型")
    private String ruleType;

    /** 计费方式（如"每小时50元"） */
    @ApiModelProperty("计费方式")
    @Excel(name = "计费方式")
    private String billingMethod;

    /** 关联活动 */
    @ApiModelProperty("关联活动")
    @Excel(name = "关联活动")
    private String activity;

    /** 状态 */
    @ApiModelProperty("状态")
    @Excel(name = "状态")
    private String status;

    /** 按小时计费（1=启用，0=禁用） */
    @ApiModelProperty("按小时计费（1=启用，0=禁用）")
    @Excel(name = "按小时计费", readConverterExp = "1==启用，0=禁用")
    private Integer hourlyBilling;

    /** 按包段计费 */
    @TableField(exist = false)
    @ApiModelProperty("按包段计费")
    @Excel(name = "按包段计费")
    private SegementBillingVO segmentBilling;


    /** 按包场计费（1=启用，0=禁用） */
    @ApiModelProperty("按包场计费（1=启用，0=禁用）")
    @Excel(name = "按包场计费", readConverterExp = "1==启用，0=禁用")
    private Integer venueBilling;

    /** 分时段计费（1=启用，0=禁用） */
    @ApiModelProperty("分时段计费（1=启用，0=禁用）")
    @Excel(name = "分时段计费", readConverterExp = "1==启用，0=禁用")
    private Integer timeSlotBilling;

    /** 跨场的计费方式 */
    @ApiModelProperty("跨场的计费方式")
    @Excel(name = "跨场的计费方式")
    private String crossVenueMethod;

    /** 整单折扣（1=允许，0=不允许） */
    @ApiModelProperty("整单折扣（1=允许，0=不允许）")
    @Excel(name = "整单折扣", readConverterExp = "1==允许，0=不允许")
    private Integer allowDiscount;

    /** 折扣方式 */
    @ApiModelProperty("折扣方式")
    @Excel(name = "折扣方式")
    private String discountType;

    /** 参与最低消费 */
    @ApiModelProperty("参与最低消费")
    @Excel(name = "参与最低消费")
    private BigDecimal minConsumption;

    /** 参与会员积分（1=是，0=否） */
    @ApiModelProperty("参与会员积分（1=是，0=否）")
    @Excel(name = "参与会员积分", readConverterExp = "1==是，0=否")
    private Integer earnPoints;

    /** 扫码开单（1=支持，0=不支持） */
    @ApiModelProperty("扫码开单（1=支持，0=不支持）")
    @Excel(name = "扫码开单", readConverterExp = "1==支持，0=不支持")
    private Integer scanOrder;

    /** 支持积分抵现（1=是，0=否） */
    @ApiModelProperty("支持积分抵现（1=是，0=否）")
    @Excel(name = "支持积分抵现", readConverterExp = "1==是，0=否")
    private Integer supportPointsPayment;

    /** 超出分钟数的计费方式 */
    @TableField(exist = false)
    @ApiModelProperty("超出分钟数的计费方式")
    @Excel(name = "超出分钟数的计费方式")
    private OvertimeBillingMethodVO overtimeBillingMethod;

    /** 开单优惠 */
    @ApiModelProperty("开单优惠")
    @Excel(name = "开单优惠")
    private String orderDiscount;

    /** 手机号 */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    private String phone;


    /** 自助预订新购（1=是，0=否） */
    @ApiModelProperty("自助预订新购（1=是，0=否）")
    @Excel(name = "自助预订新购", readConverterExp = "1==是，0=否")
    private Integer selfBookingNewPurchase;

    /**自助预订续费（1=是，0=否） */
    @ApiModelProperty("自助预订续费（1=是，0=否）")
    @Excel(name = "自助预订续费", readConverterExp = "1==是，0=否")
    private Integer selfBookingRenewal;


    /** 桌台计费类型 */
    @ApiModelProperty("桌台计费类型")
    @Excel(name = "桌台计费类型")
    private String tableBillingType;

    /** 桌台计费按小时计费每小时元 */
    @ApiModelProperty("桌台计费按小时计费每小时元")
    @Excel(name = "桌台计费按小时计费每小时元")
    private String amountPerHour;

    /** 桌台计费按小时计费开单后 */
    @TableField(exist = false)
    @ApiModelProperty("桌台计费按小时计费开单后")
    @Excel(name = "桌台计费按小时计费开单后")
    private OrderIssueVO orderIssue;


    /**超出1小时计费方式 消费超出1小时，按实际分钟数计费 */
    @ApiModelProperty("超出1小时计费方式 消费超出1小时，按实际分钟数计费")
    @Excel(name = "超出1小时计费方式 消费超出1小时，按实际分钟数计费")
    private String exceedOneHourBillingMethod;


    /**按包段计费开单后 */
    @ApiModelProperty("按包段计费开单后")
    @Excel(name = "按包段计费开单后")
    private String billIssueBySegment;

    /**超出4小时计费方式 */
    @ApiModelProperty("超出4小时计费方式")
    @Excel(name = "超出4小时计费方式")
    private String exceedFourHourBillingMethod;


    /**按包场计费场次一 */
    @TableField(exist = false)
    @ApiModelProperty("按包场计费场次一")
    @Excel(name = "按包场计费场次一")
    private SessionOneChargeEntireVenueVO sessionOneChargeEntireVenue;


    /**按包场计费场次二 */
    @TableField(exist = false)
    @ApiModelProperty("按包场计费场次二")
    @Excel(name = "按包场计费场次二")
    private SessionTwoChargeEntireVenueVO sessionTwoChargeEntireVenue;


    /**按包场计费开单后 */
    @ApiModelProperty("按包场计费开单后")
    @Excel(name = "按包场计费开单后")
    private String issueVenueFeeAfterOrder;


    /**跨场计费方式 */
    @ApiModelProperty("跨场计费方式")
    @Excel(name = "跨场计费方式")
    private String crossSiteBillingMethod;

    /**分时段计费按小时计费场次一 */
    @TableField(exist = false)
    @ApiModelProperty("分时段计费按小时计费场次一")
    @Excel(name = "分时段计费按小时计费场次一")
    private TimeSlotBillingSessionOneVO timeSlotBillingSessionOne;


    /**分时段计费按小时计费场次二*/
    @TableField(exist = false)
    @ApiModelProperty("分时段计费按小时计费场次二")
    @Excel(name = "分时段计费按小时计费场次二")
    private TimeSlotBillingSessionTwoVO timeSlotBillingSessionTwo;


    /**分时段计费按小时计费开单后*/
    @TableField(exist = false)
    @ApiModelProperty("分时段计费按小时计费开单后")
    @Excel(name = "分时段计费按小时计费开单后")
    private OrderIssueVO timeSlotBillIssue;


    /**分时段计费分时段按包段计费场次一 */
    @TableField(exist = false)
    @ApiModelProperty("分时段计费分时段按包段计费场次一")
    @Excel(name = "分时段计费分时段按包段计费场次一")
    private PackageSlotBillingSessionOneVO packageSlotBillingSessionOne;


    /**分时段计费分时段按包段计费场次二*/
    @TableField(exist = false)
    @ApiModelProperty("分时段计费分时段按包段计费场次二")
    @Excel(name = "分时段计费分时段按包段计费场次二")
    private PackageSlotBillingSessionTwoVO packageSlotBillingSessionTwo;


    /**分时段计费分时段按包段计费开单后*/
    @TableField(exist = false)
    @ApiModelProperty("分时段计费分时段按包段计费开单后")
    @Excel(name = "分时段计费分时段按包段计费开单后")
    private OrderIssueVO packageSlotBillIssue;


    /**分时段计费分时段按分钟计费场次一 */
    @TableField(exist = false)
    @ApiModelProperty("分时段计费分时段按分钟计费场次一")
    @Excel(name = "分时段计费分时段按分钟计费场次一")
    private MinuteBillingSessionOneVO minuteBillingSessionOne;


    /**分时段计费分时段按分钟计费场次二*/
    @TableField(exist = false)
    @ApiModelProperty("分时段计费分时段按分钟计费场次二")
    @Excel(name = "分时段计费分时段按分钟计费场次二")
    private MinuteBillingSessionTwoVO minuteBillingSessionTwo;


    /**分时段计费分时段按分钟计费开单后*/
    @TableField(exist = false)
    @ApiModelProperty("分时段计费分时段按分钟计费开单后")
    @Excel(name = "分时段计费分时段按分钟计费开单后")
    private OrderIssueVO minuteSlotBillIssue;


    /**整单折扣后继续参与会员折扣*/
    @ApiModelProperty("整单折扣后继续参与会员折扣")
    @Excel(name = "整单折扣后继续参与会员折扣")
    private String participateMemberDiscount;


    /**桌台费折扣*/
    @ApiModelProperty("桌台费折扣")
    @Excel(name = "桌台费折扣")
    private String tableFeeDiscount;


    /**超时费折扣*/
    @ApiModelProperty("超时费折扣")
    @Excel(name = "超时费折扣")
    private String overtimeFeeDiscount;


    /**跨时段计费方式 消费超出时段，按实际分钟数计费 */
    @ApiModelProperty("跨时段计费方式 消费超出时段，按实际分钟数计费")
    @Excel(name = "跨时段计费方式 消费超出时段，按实际分钟数计费")
    private String crossTimeSlotBillingMethod;


    /**小程序自助预订计费规则自助按小时计费*/
    @ApiModelProperty("小程序自助预订计费规则自助按小时计费")
    @Excel(name = "小程序自助预订计费规则自助按小时计费")
    private String selfServiceBillingByHour;


    /**小程序自助预订计费规则自助按包段计费*/
    @ApiModelProperty("小程序自助预订计费规则自助按包段计费")
    @Excel(name = "小程序自助预订计费规则自助按包段计费")
    private String selfServiceBillingBySegment;


    /**小程序自助预订计费规则自助按包场计费开始时间*/
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("小程序自助预订计费规则自助按包场计费开始时间")
    @Excel(name = "小程序自助预订计费规则自助按包场计费开始时间")
    private Date selfServiceStartTime;


    /**小程序自助预订计费规则自助按包场计费结束时间*/
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("小程序自助预订计费规则自助按包场计费结束时间")
    @Excel(name = "小程序自助预订计费规则自助按包场计费结束时间")
    private Date selfServiceEndTime;


    /**小程序自助预订计费规则自助按包场计费场次价格*/
    @ApiModelProperty("小程序自助预订计费规则自助按包场计费场次价格")
    @Excel(name = "小程序自助预订计费规则自助按包场计费场次价格")
    private String selfServicePrice;


    /**设备服务计费按小时计费每小时 */
    @ApiModelProperty("设备服务计费按小时计费每小时")
    @Excel(name = "设备服务计费按小时计费每小时")
    private String equipmentBillingByHour;


    /**设备服务计费按小时计费开单后 */
    @TableField(exist = false)
    @ApiModelProperty("设备服务计费按小时计费开单后")
    @Excel(name = "设备服务计费按小时计费开单后")
    private OrderIssueVO equipmentBillingAfterOrder;


    /**设备服务计费分时段计费分时段按分钟计费场次一*/
    @TableField(exist = false)
    @ApiModelProperty("设备服务计费分时段计费分时段按分钟计费场次一")
    @Excel(name = "设备服务计费分时段计费分时段按分钟计费场次一")
    private MinuteBillingSessionOneVO byMinuteSessionOne;


    /**设备服务计费分时段计费分时段按分钟计费场次二*/
    @TableField(exist = false)
    @ApiModelProperty("设备服务计费分时段计费分时段按分钟计费场次二")
    @Excel(name = "设备服务计费分时段计费分时段按分钟计费场次二")
    private MinuteBillingSessionTwoVO byMinuteSessionTwo;


    /**设备服务计费分时段计费分时段按分钟计费开单后 */
    @TableField(exist = false)
    @ApiModelProperty("设备服务计费分时段计费分时段按分钟计费开单后")
    @Excel(name = "设备服务计费分时段计费分时段按分钟计费开单后")
    private OrderIssueVO byMinuteAfterOrder;


    /**员工服务计费按小时计费每小时 */
    @ApiModelProperty("员工服务计费按小时计费每小时")
    @Excel(name = "员工服务计费按小时计费每小时")
    private String employeeBillingByHour;


    /**员工服务计费按小时计费开单后 */
    @TableField(exist = false)
    @ApiModelProperty("员工服务计费按小时计费开单后")
    @Excel(name = "员工服务计费按小时计费开单后")
    private OrderIssueVO employeeBillingAfterOrder;


    /**员工服务计费分时段计费分时段按分钟计费场次一*/
    @TableField(exist = false)
    @ApiModelProperty("员工服务计费分时段计费分时段按分钟计费场次一")
    @Excel(name = "员工服务计费分时段计费分时段按分钟计费场次一")
    private MinuteBillingSessionOneVO employeeByMinuteSessionOne;


    /**员工服务计费分时段计费分时段按分钟计费场次二*/
    @TableField(exist = false)
    @ApiModelProperty("员工服务计费分时段计费分时段按分钟计费场次二")
    @Excel(name = "员工服务计费分时段计费分时段按分钟计费场次二")
    private MinuteBillingSessionTwoVO employeeByMinuteSessionTwo;


    /**员工服务计费分时段计费分时段按分钟计费开单后 */
    @TableField(exist = false)
    @ApiModelProperty("员工服务计费分时段计费分时段按分钟计费开单后")
    @Excel(name = "员工服务计费分时段计费分时段按分钟计费开单后")
    private OrderIssueVO employeeByMinuteAfterOrder;


    /**消费超出时段 按超出分钟数区间计费 */
    @TableField(exist = false)
    @ApiModelProperty("消费超出时段 按超出分钟数区间计费")
    @Excel(name = "消费超出时段 按超出分钟数区间计费")
    private ExceedingTimeBillingByMinuteVO exceedingTimeBillingByMinute;


    /**分时段计费分时段按包段计费消费多少小时内 */
    @ApiModelProperty("分时段计费分时段按包段计费消费多少小时内")
    @Excel(name = "分时段计费分时段按包段计费消费多少小时内")
    private Integer consumeWithinHowManyHours;


    /**分时段计费分时段按包段计费按每小时多少元计算 */
    @ApiModelProperty("分时段计费分时段按包段计费按每小时多少元计算")
    @Excel(name = "分时段计费分时段按包段计费按每小时多少元计算")
    private Integer howMuchYuanPerHour;


    /**超出1小时的计费方式 消费超出1小时，按超出分钟数区间计费  */
    @TableField(exist = false)
    @ApiModelProperty("超出1小时的计费方式 消费超出1小时，按超出分钟数区间计费 ")
    @Excel(name = "超出1小时的计费方式 消费超出1小时，按超出分钟数区间计费 ")
    private ExceedOneHourBillingByMinuteVO exceedOneHourBillingByMinute;


}
